N. 11 del 1/7/1998

Tutta la grafica 3D in dieci passi


1) Le scene tridimensionali sono composte da oggetti 3D che a loro volta sono costituiti da superfici 2D; queste vengono scomposte in triangoli e i triangoli in punti. Ogni triangolo rappresenta l'elemento base di tutte le funzioni grafiche 3D in quanto è il poligono più semplice che può essere utilizzato per descrivere geometricamente le superfici più complesse. Sui triangoli, inoltre, si possono realizzare operazioni matematiche per la traslazione, la rotazione e il ridimensionamento nello spazio.

2) La rappresentazione sullo schermo di una scena 3D deve tenere conto dei soli oggetti in primo piano e delle porzioni visibili di quelli presenti sui piani posteriori. Per determinare quali sono i triangoli da rappresentare in ogni istante si utilizza la tecnica detta Z-buffering. In una zona di memoria detta Z-buffer viene conservata l'informazione relativa alla posizione di ciascun punto lungo l'asse Z del sistema di riferimento; confrontando le coordinate Z dei vari punti si stabilisce quali si trovano in secondo piano.

3) Gli oggetti possono essere visualizzati con diversi livelli di dettaglio: wireframe (fil di ferro) con cui vengono visualizzati solo gli spigoli e non le superfici; flat shading (ombreggiatura piatta) con cui si rappresentano anche le superfici ma in modo piuttosto grezzo; Gouraud shading (ombreggiatura di tipo Gouraud) che aggiunge maggiore dettaglio alle superfici; Phong shading (ombreggiatura di tipo Phong) che assicura il massimo realismo.

4) Gli oggetti 3D possono essere colorati oppure ricoperti da immagini più complesse (texture). In questo caso a ogni punto (texel) di ciascun triangolo si fa corrispondere un preciso punto della mappa di bit che costituisce la texture prescelta. Si applica poi la correzione prospettica che modifica l'aspetto delle texture in modo da rispettare le regole della prospettiva in base alla posizione relativa dell'osservatore.

5) È quindi possibile migliorare la resa visiva delle texture in due modi: con la tecnica del bilinear filtering che interpola i colori dei texel adiacenti per limitare l'effetto mosaico risultante dal ridimensionamento delle texture di piccole dimensioni; oppure con la tecnica Mip mapping che sfrutta versioni diverse della stessa texture (con definizione maggiore o minore) in base alla grandezza della superficie da ricoprire.

6) Si possono anche utilizzare texture trasparenti che lasciano intravedere gli oggetti posizionati in secondo piano; questa funzione viene realizzata con le tecniche alpha blending e color key transparency. La prima descrive i texel aggiungendo un bit alla tradizionale tripletta di valori rgb (Red Green Blue) che diventa argb (Alpha Red Green Blue); il canale aggiuntivo determina il grado di trasparenza del texel. La seconda, meno raffinata, agisce considerando come invisibile un colore chiave predeterminato.

7) Per migliorare ulteriormente la resa visiva degli oggetti è possibile sfumare i bordi delle superfici e i punti di contatto delle texture adiacenti. Ciò si realizza interpolando i colori delle zone poste a contatto con la tecnica detta anti-aliasing, oppure mescolando gradualmente i texel di due superfici vicine con la tecnica del dithering.

8) Si possono poi applicare gli effetti di illuminazione e atmosferici: specular highlights (riflessi speculari) che producono la riflessione dei raggi di luce incidenti sugli oggetti; fogging che genera l'effetto nebbia sfumando gradualmente l'orizzonte verso il bianco; depth cueing che aggiunge profondità agli ambienti chiusi sfumando verso il nero gli oggetti in secondo piano.

9) Tutte queste operazioni devono essere svolte in sequenza milioni di volte al secondo per ogni scena da rappresentare e richiedono una notevole mole di calcoli; maggiore è la velocità di calcolo, maggiore è il frame rate generato, cioè il numero di fotogrammi prodotti al secondo (fps). Per questo motivo è necessario utilizzare un acceleratore grafico 3D, altrimenti tutto il processo risulta lento e rende le animazioni poco fluide e le scene poco realistiche.

10) Per velocizzare l'intero processo di rendering è opportuno utilizzare la tecnica del doppio buffering. Questa consiste nel calcolare un fotogramma dell'animazione della scena 3D mentre viene visualizzato il precedente, così da renderne molto più immediata e fluida la rappresentazione. È inoltre opportuno che l'acceleratore grafico disponga di un coprocessore capace di eseguire autonomamente (senza coinvolgere la cpu di sistema) tutte le operazioni di calcolo dei triangoli (triangle setup).


top


© Mondadori Informatica S.p.A. -1998
Tutti i diritti di proprietα letteraria e artistica riservati